package com.credithc.customers.manager.service;

import com.credithc.baseserv.core.service.BaseService;
import com.credithc.baseserv.pageHelper.PageInfo;
import com.credithc.customers.base.po.PreCustomerInfoPo;
import com.credithc.customers.manager.ro.CompanyCustomerInfoRo;
import com.credithc.customers.manager.ro.CustomerInfoRo;
import com.credithc.customers.manager.ro.PreCustomerInfoRo;
import com.credithc.customers.manager.vo.CompanyCustomerInfoVo;
import com.credithc.customers.manager.vo.CustomerInfoVo;
import com.credithc.customers.manager.vo.PreCustomerInfoVo;

import java.util.Map;

/**
 * @Title:
 * @Author: Denghx
 * @Date: 2018/12/17 1:32
 * @Description: com.credithc.customers.manager.service
 * @Version: V1.0.0
 */
public interface ICustomerInfoService extends BaseService<PreCustomerInfoPo, PreCustomerInfoRo, PreCustomerInfoVo> {
    /**
     * @description: 用户信息查询
     * @author: denghx
     * @param: ro
     * @return: com.credithc.baseserv.pageHelper.PageInfo<com.credithc.customers.manager.vo.PreCustomerInfoVo>
     */
    PageInfo<PreCustomerInfoVo> selectAllPre(PreCustomerInfoRo ro);

    /**
     * @description: 个人客户基础信息查询
     * @author: denghx
     * @date: 2018/12/17 17:20
     * @param: ro
     * @return: com.credithc.baseserv.pageHelper.PageInfo<com.credithc.customers.manager.vo.CustomerInfoVo>
     */
    PageInfo<CustomerInfoVo> selectAllCustomer(CustomerInfoRo ro);

    /**
     * @description: 对公客户信息查询
     * @author: denghx
     * @date: 2018/12/18 15:47
     * @param: ro
     * @return: com.credithc.baseserv.pageHelper.PageInfo<com.credithc.customers.manager.vo.CompanyCustomerInfoVo>
     */
    PageInfo<CompanyCustomerInfoVo> selectAllCompany(CompanyCustomerInfoRo ro);

    /**
     * @description: 用户拓展信息
     * @author: denghx
     * @date: 2018/12/18 16:00
     * @param: preCustomerNo
     * @return: java.util.List<com.credithc.customers.manager.vo.PreCustomerExtendVo>
     */
    Map<String, Object> selectPreExtend(String preCustomerNo);

    /**
     * @description: 单个客户转化情况
     * @author: denghx
     * @date: 2018/12/19 2:08
     * @param: preCustomerNo
     * @return: java.util.Map<java.lang.String                                                                                                                                                                                                                                                               ,                                                                                                                                                                                                                                                               java.lang.Object>
     */
    Map<String, Object> selectPreChange(String preCustomerNo);

    /**
     * @description: 用户转化率
     * @author: denghx
     * @date: 2018/12/19 10:00
     * @param:
     * @return: java.util.Map<java.lang.String                                                                                                                               ,                                                                                                                               java.lang.Object>
     */
    Map<String, Object> selectPreStatic();

    /**
     * @description: 客户详情
     * @author: denghx
     * @date: 2018/12/19 11:04
     * @param: customerNo
     * @return: java.util.Map<java.lang.String                                                                                                                               ,                                                                                                                               java.lang.Object>
     */
    Map<String, Object> selectCustomerExtend(String customerNo);

    /**
     * @description: 对公客户详情
     * @author: denghx
     * @date: 2018/12/19 14:27
     * @param: customerNo
     * @return: java.util.Map<java.lang.String                                                                                                                               ,                                                                                                                               java.lang.Object>
     */
    Map<String, Object> selectCompanyExtend(String customerNo);

    /**
     * @param legalName
     * @param idCardType
     * @param idCardNo
     * @description: 对公客户证件信息修改
     * @author: denghx
     * @date: 2019/1/14 14:40
     * @param: id
     * @return: java.util.Map<java.lang.String                                                               ,                                                               java.lang.Object>
     */
    Map<String, Object> updateCompany(String id, String legalName, String idCardType, String idCardNo);

    Map<String, Object> updateCompanyNotice(String id, String customerNo, String legalName, String idCardType, String idCardNo);

    /**
     * @param customerName
     * @param idCardType
     * @param idCardNo
     * @description: 个人客户证件信息修改
     * @author: denghx
     * @date: 2019/1/16 23:22
     * @param: id
     * @return: java.util.Map<java.lang.String                               ,                               java.lang.Object>
     */
    Map<String, Object> updatePerson(String id, String customerName, String idCardType, String idCardNo);

    Map<String, Object> updatePersonNotice(String id, String customerNo, String customerName, String idCardType, String idCardNo);

    Map<String, Object> editMergePerson(String id, String customerNo, String mergeId, String mergeCustomerNo);

    Map<String, Object> editMergeBizInfo(String id, String customerNo, String mergeId, String mergeCustomerNo, String bizId);

    /**
     * @description: 业务变更处理证件信息合并展示
     * @author: denghx
     * @date: 2019/1/23 2:43
     * @param: id
     * @return: java.util.Map<java.lang.String       ,       java.lang.Object>
     */
    Map<String, Object> editMergeBizInfo(String id);

    Map<String, Object> editBizNotice(String id, String customerNo, String customerName, String idCardType, String idCardNo, Integer type);

    PageInfo<PreCustomerInfoVo> selectAllPreV2(PreCustomerInfoRo ro);
}
